package org.example;

import com.alibaba.fastjson.JSON;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author liukaihao
 * @date 2025/03/06
 */
public class Main14 {
    public static void main(String[] args) {
        // 1.给定一个字符串数组，编写一个程序，找出所有长度大于等于5的字符串，并按字母顺序排序。
        String[] strs = {"zhangsan","lisi","wangwu"};
        List<String> list1 = Arrays.stream(strs).filter(o->o.length()>5).sorted().collect(Collectors.toList());
        System.out.println("list1:"+ JSON.toJSONString(list1));

        // 2: 给定一个整数数组，编写一个程序，计算数组中所有偶数的平均值
        int[] ints = {2,3,4,5,6,7,8,9};
        OptionalDouble optionalDouble = Arrays.stream(ints).filter(o->(o%2==0)).average();
        System.out.println("OptionalDouble:"+ optionalDouble.toString());
        //3:给定一个字符串数组，编写一个程序，计算所有字符串中字符'a'出现的次数
        String[] strs3 = {"zhansana","lisia","wangwua"};//有偏差
        int count = Arrays.stream(strs).mapToInt(o->(int) o.chars().filter(x->x=='a').count()).sum();
        System.out.println("count:"+count);
        //4:给定一个整数数组，编写一个程序，去除重复的元素，并按升序排序。
        int[] ints4 = {2,2,3,4};
        List list4 = (List) Arrays.stream(ints4).distinct().sorted().boxed().collect(Collectors.toList());
        System.out.println("list4:"+JSON.toJSONString(list4));

        //5:给定一个用户列表，编写一个程序，筛选出年龄大于等于18岁并且名字长度大于等于5的用户，并按照名字长度降序排列。


        //6:给定一个整数数组，编写一个程序，计算数组中所有元素的总和。
        int[] ints6 = {2,3,4,5,6,7};
        int sum1 = Arrays.stream(ints6).sum();
        System.out.println("sum6:"+sum1);

        //7:给定一个字符串数组，编写一个程序，将所有字符串拼接成一个大字符串。
        String[] strs7 = {"zhansan","lisi","wangwu"};
        String result7 = Arrays.stream(strs7).collect(Collectors.joining());
        System.out.println("result7:"+result7);


        //8:给定一个整数数组，编写一个程序，计算数组中所有元素的平方和。
        int[] ints8 = {2,3,4,5,6,7};
        int r8 = Arrays.stream(ints8).map(u->u*u).sum();
        System.out.println("r8:"+result7);


        //9.给定一个字符串数组，编写一个程序，去除重复的字符串，并统计每个字符串出现的次数。
        String[] strs9 = {"zhansan","lisi","wangwu","wangwu"};
        Map<String,Integer> result9 = new HashMap<>();
        //先分组
        Map<String,List<String>> map9 = Arrays.stream(strs9).collect(Collectors.groupingBy(String::toString));
        //在统计
        map9.forEach((k,v)->result9.put(k,v.size()));
        System.out.println("r9:"+JSON.toJSONString(result9));

        //10.给定一个用户列表，编写一个程序，筛选出年龄大于等于18岁的用户，并将每个用户的姓名转换为大写形式。


    }

}
